package es.masterd.lector_rss.activities;

import es.masterd.lector_rss.R;
import es.masterd.lector_rss.db.FeedsDB.Posts;
import android.app.Activity;
import android.content.ContentUris;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.text.format.DateFormat;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.widget.TextView;

public class NoticiaActivity extends Activity {
	
	/**
	 * Definición de los componentes de la pantalla
	 */
	private TextView titulo;
	private TextView fecha;
	private WebView contenido;
	
	/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.noticia_detalle);
        setTitle(R.string.titulo_noticias);
        
        // Localización de los componentes de pantalla
        titulo = (TextView) findViewById(R.id.feedNoticiaTitulo);
        fecha = (TextView) findViewById(R.id.feedNoticiaFecha);
        contenido = (WebView) findViewById(R.id.feedNoticiaContenido);
        
        // Al pulsar sobre el titulo se cerrará la ventana emergente
        titulo.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				finish();
			}
        });
    }
    
    @Override
    protected void onStart() {
    	super.onStart();
    	try {
    		Bundle extras = getIntent().getExtras();
    		long idNoticia = extras.getLong("idNoticia");
    		final String[] columnas = new String[] { Posts._ID, Posts.TITLE, Posts.PUB_DATE, Posts.DESCRIPTION };
    		Uri uri = Uri.parse("content://es.masterd.blog/post");
    		uri = ContentUris.withAppendedId(uri, idNoticia);
    		
    		// Query managed: la actividad se encarga de cerrar y volver a cargar el cursor cuando sea necesario
    		Cursor cursor = managedQuery(uri, columnas, null, null, Posts.PUB_DATE + " DESC");
    		
    		// Queremos enterarnos de si cambian los datos para recargar el cursor
    		cursor.setNotificationUri(getContentResolver(), uri);
    		
    		// Para que la actividad se encargue de manejar el cursor segun sus ciclos de vida
    		startManagingCursor(cursor);
    		
    		// Mostramos los datos del cursor en la vista
    		if(cursor.moveToFirst()) {
    			titulo.setText(cursor.getString(1));
    			java.text.DateFormat dateFormat = DateFormat.getLongDateFormat(NoticiaActivity.this);
    			fecha.setText(dateFormat.format(cursor.getLong(2)));
    			String texto = new String(cursor.getString(3).getBytes(),"utf-8");
    			contenido.loadDataWithBaseURL(null, texto, "text/html", "UTF-8", null);
    		}
    	} catch (Exception e) {
    		Log.d("NoticiaActivity", "Error en onStart:" + e.getLocalizedMessage());
    	}
    }
}
